iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
自我挑戰組

C# 和 SQL 探索之路 - 3系列 第 24

Day 24: SQL Server 查詢錯誤、備份資料庫

  • 分享至 

  • xImage
  •  

這篇文章描述如何查詢 SQL Server 的錯誤代碼,以及錯誤是「SQL Server 插入資料時回報容量不足」時,使用 Script 備份資料庫,再移除資料。

查詢 SQL 的錯誤代碼

由於以前開發的一支程式會不斷地插入大量資料到資料庫,預期在 SQL Server 會遇到超過容量上限的問題,因此當時決定先找到對應的錯誤代碼,並從 C# 中檢查是否有該錯誤的存在。

Database Engine Errors - SQL Server - Microsoft Docs」 列出了 SQL 的錯誤,以及相對應的描述 (和解決方法)。

我們可以從該網頁可以預先找到「錯誤代碼 1105:SQL Express 容量限制達到時發出的錯誤」。下一步需要能從 C# 檢查錯誤代號。

C# 執行 SQL 語法查詢,如 SqlCommand 類別的的 ExecuteNonQuery()SqlDataReaderExecuteReader() 時,可能會遇到產生 SqlException Class (System.Data.SqlClient) - Microsoft Docs 的狀況。此時可以查詢 SqlException.Number,即對應的 SQL 錯誤代碼。

SqlException.Number 為 1105 時,表示 SQL Server Express 已超過容量限制,或是磁碟空間不足也可能造成這個問題。

SQL Server 備份資料庫

接著我們可以透過程式執行以下 Script,或是由 SSMS (SQL Server Management Studio) 進行備份,完成後再將資料移除掉。([SQL Server]使用T-SQL來備份與還原資料庫 - F6 Team - 點部落)

BACKUP DATABASE test TO DISK = 'C:\test.bak' -- 可替換成其它磁碟區的路徑
GO

備註

這個作法算是比較粗糙的做法,可能會造成系統因短暫容量不足導致不穩定,或新增資料時需要等待備份完成、資料移除的情形。

建議的做法,是建立離峰時刻的排程,定期備份和移除資料。


上一篇
Day 23: SQL Server 交易持久性與延遲交易持久
下一篇
Day 25: 文章摘要 - 資料庫正規化
系列文
C# 和 SQL 探索之路 - 330
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言